package com.niodata.dp.monitor.common.util;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class MathUtil {

  /**
   * 处理double数据保留decimalPlaces位小数（四舍五入）.
   */
  public static double round(double value, int decimalPlaces) {
    return new BigDecimal(value).setScale(decimalPlaces, RoundingMode.HALF_UP).doubleValue();
  }

  /**
   * 处理double数据保留decimalPlaces位小数（向下舍入）.
   */
  public static double floor(double value, int decimalPlaces) {
    return new BigDecimal(value).setScale(decimalPlaces, RoundingMode.FLOOR).doubleValue();
  }

  /**
   * 处理百分比，保留decimalPlaces位小数.
   *
   * @param value 百分比（0~100）
   * @param decimalPlaces 保留小数位
   */
  public static double handlePercentWithFixDecimalPlaces(double value, int decimalPlaces) {
    Double percent = MathUtil.round(value, decimalPlaces);
    //对于四舍五入结果为100时，使用向下舍入重新计算
    if (percent.equals(100d)) {
      percent = MathUtil.floor(value, decimalPlaces);
    }
    return percent;
  }
}
